Shadowing and paging are techniques commonly used in computer systems to control access to memory; shadowing to shorten access time to information stored in slow memory devices, and paging to increase addressing capacity relative to systems having memory addressing limitations.
In shadowing, data stored in a slow memory device, such as an EPROM (Electrically Programmable Read Only Memory), is copied to a faster memory device ("shadow RAM") at system initialization. Thereafter, addresses directed to the slow device are redirected to the shadow RAM device, with consequent shortening of access time delays. The address redirection is effected by "shadow" translating logic that is programmed to detect address signals in a range preassigned to the slow device, to translate the detected signals into corresponding address signals associated with the shadow RAM device, and to apply the corresponding address signals along with accompanying control signals to the shadow RAM device. Thus, the slow device is effectively overshadowed by shadow RAM, and the copied data is accessible more quickly through the latter device. Usually, the copied data is data that will be accessed relatively frequently during normal use of the system.
In paging, a many-to-one relationship is established between physical page address spaces in one or more memory devices (where a page is a fixed unit of capacity such as 32K bytes) and a selected "virtual" page space in the memory address space of a computer system. At any instant of time, only one page in the memory device is associated with the selected virtual page, but this association is changeable dynamically by system programs. This page association is effected by page translating logic associated with a (pageable) memory device or unit having plural pages of storage capacity. Such page translating logic is settable, via I/O write operations from a system processor, to effectively map a selected one of the pages in the associated memory device into association with a selected virtual page in the system address space.
Ordinarily, shadowing is established at system initialization (or reset), and used thereafter in an irreversible manner. The invention recognizes that there are instances when it is desirable to be able to use shadowing in a reversible manner, in particular, relative to less than all of the data stored in a slow memory device. Such usage is needed for allowing access to uncopied data in the slow memory, when required by system programs.
A problem solved by the present invention arises when less than all of the data contained in a slow memory device is copied to a faster shadow RAM, and associated shadow translating logic is set to redirect addresses from the slow memory device to the shadow RAM device. This occurs, for instance, when the slow device is used to store data frequently used by system application programs and data not so used, and when only the frequently used data is copied to shadow RAM. In this situation, the frequently used data and infrequently used data could be located in different page storage sections of the slow memory. Without shadowing, all of the data in the slow device is accessible at the characteristic slow rate of that device. With constant shadowing, the data copied to shadow RAM is accessible at the faster rate of that device, but data not copied to shadow RAM could be inaccessible due to the action of the shadow translating logic explained above.
The present invention provides for programmably reversible shadowing to deal with such situations. In programmably reversible shadowing, the shadow translating logic is configured to be toggled between shadowing and non-shadowing modes of operation after system initialization. In shadowing mode, addresses directed to the slow memory device are redirected to shadow RAM, and in non-shadowing mode the same addresses are transferred directly to the page translating controls of the slow device. Thus, in shadowing mode data copied to shadow RAM is quickly accessible, and in non-shadowing mode all data in the slow memory (including uncopied data) is fully but slowly accessible.
A particular application of the invention is useful for shadowed handling of video BIOS (Basic Input Output System) and font data that controls formation of video monitor images in the system. In such usage, a video BIOS program and several fonts are stored in a nonvolatile but slow memory device, such as an EPROM (Electronically Programmable Read Only Memory). At system initialization, the video BIOS program and one of the fonts is copied to a shadow RAM which is then enabled for shadow translation. The copied font is one used by most system applications to display symbols and characters, and the uncopied fonts are required by very few programs. Without the present invention, the shadow translating logic would be constantly enabled for shadowing, so that these other fonts would be inaccessible. The present invention provides an efficient basis for providing occasional access to these other fonts.
The expedient of having all of the fonts copied to shadow RAM was considered but rejected as impractical or inefficient. It would require storage in shadow RAM of fonts which might never be used in some systems, it would require modification of shadow translating logic to include paging capability (assuming the fonts are stored in different EPROM pages), and in general it would tend to unduly increase the costs of shadowing. Furthermore, such shadowing might be completely unfeasible relative to a memory arrangement in which access to shadow RAM is managed by a semiconductor chip lacking page translation capability, and paged access to an associated EPROM is managed by another chip made by a different manufacturer.
With the present invention, this problem is eliminated. The shadow RAM is configured for shadowing less than the entire content of a slow memory, while the shadow translating logic is configured to permit the system, during its normal programmed operations, to reversibly toggle that logic to non-shadowing mode, and thereby allow for post-initialization access to uncopied data in the slow memory (when such access is needed by a particular system application or system user).